在前面的GET請求中,我們只能一次性地拿到全部bootcamps的資料或特定ID的資料
但使用者可能會依自身的需求與條件來選擇適合自己的bootcamp
以下將是示範如何透過filtering來取得資料
在'./controllers/bootcamps'中,找到getBootcamps函式
// Implement basic filtering
let queryStr = JSON.stringify(req.query);
let query = Bootcamp.find(JSON.parse(queryStr));
const bootcamps = await query;
只要使用者輸入能對應到資料庫中的key value pair,伺服器就會回傳相對應的資料,如下圖
在之後的文章中,我們會用Bootcamp model reference 其他組資料(courses)
一組bootcamp會對應到多筆courses的資料像是tuition,那我們就能利用tuition來計算該組bootcamp的平均學費為多少
一樣在getBootcamps函式中
// Implement advanced filtering
let queryStr = JSON.stringify(req.query);
queryStr = queryStr.replace(/\b(gt|gte|lt|lte|in)\b/g, match => `$${match}`);
let query = Bootcamp.find(JSON.parse(queryStr));
const bootcamps = await query;
第三行的queryStr使用到了MongoDB的Comparison Query Operators
假設使用者要搜尋平均學費小於或等於10000的bootcamp,可以在req.query輸入:
averageCost[lte]=10000